//函数节流
// let count=0;
// function fn1(){
//     count++;
//     console.log(count)
// }
// //100ms内连续触发的调用，后一个调用会把前一个调用的等待处理掉，但每隔200ms至少执行一次
// document.onmousemove=ecDo.delayFn(fn1,100,200)
export function delayFn(fn, delay, mustDelay) {
  let timer = null
  let t_start
  return function() {
    let that = this,
      args = arguments,
      t_cur = +new Date()
    //先清理上一次的调用触发（上一次调用触发事件不执行）
    clearTimeout(timer)
    //如果不存触发时间，那么当前的时间就是触发时间
    if (!t_start) {
      t_start = t_cur
    }
    //如果当前时间-触发时间大于最大的间隔时间（mustDelay），触发一次函数运行函数
    if (t_cur - t_start >= mustDelay) {
      fn.apply(that, args)
      t_start = t_cur
    } else {
      //否则延迟执行
      timer = setTimeout(() => {
        fn.apply(that, args)
      }, delay)
    }
  }
}
